"""
使用bs4解析数据
1.构造bs4对象
2.搜索节点
    1)通过find_all,find等操作方法搜索节点
    2)通过CSS选择器搜索
3.获取节点内容
    get_text()
"""
import requests
from bs4 import BeautifulSoup

# 1.利用requests爬取百度首页，保存在文件 baidu.html
# 爬取网页:1)是否需要登录才能爬取(可以利用cookie或session实现)
#         2）get请求还是post请求(post请求需要请求体数据)


url = 'https://www.baidu.com/'
# 构造字典(请求头)
h = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36'
}
# get请求:url,包含User-Agent的请求头
r = requests.get(url, headers=h)
# 将数据写入文件
with open('baidu.html', 'w', encoding='gbk') as f:
    f.write(r.content.decode())
# 2.利用bs4解析baidu.html文件
# 1)构造bs4对象
soup = BeautifulSoup(r.content.decode(), 'lxml')
# 2)利用finad_all，find方法搜索节点/标签
#   搜索文本中所有的a标签
print('-------搜索所有的a标签--------')
result1 = soup.find_all('a')
print(type(result1))
print(result1)
print('-------搜索第一个a标签-------')
result2=soup.find('a')
print(result2)
print('-------搜索所有的a标签和img标签,结果保留3条记录-------')
result3=soup.find_all(['a','img'],limit=3)
print(result3)
print('-------搜索a标签，以及特殊属性值-------')
result4=soup.find_all('a',{'class':'mnav c-font-normal c-color-t'})
for e in result4:
    print(e)
# 2)利用CSS选择器搜索
print('-------用select搜索title标签-------')
r1=soup.select('title')
print(r1)
print('-------搜索标签名为li类名为hotsearch-item-------')
r2=soup.select('li.hotsearch-item')
for e in r2:
    print(e.get_text())

